package com.william.jdbcplus.boot.test.web;

import com.william.jdbcplus.boot.starter.util.SpringContextUtil;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

/**
 * ApplicationContextInitializer的实现类
 * ApplicationContextInitializer接口是在spring容器刷新之前执行的一个回调函数。
 */
@Order(Ordered.HIGHEST_PRECEDENCE)
public class ContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    /**
     * applicationContext.getBeanDefinitionCount()
     * getBeanDefinitionCount()方法 是ListableBeanFactory 接口的方法，        ConfigurableApplicationContext 通过继承和实现
     * 拥有了该方法
     */
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        SpringContextUtil.setContext(applicationContext);
    }
}
